package edu.scau.mis.pos.mapper;

import edu.scau.mis.pos.domain.Category;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface CategoryMapper {



    // 查询所有顶级类别--parentId is null
    List<Category> findAllParent();

    // 根据父类别ID查询子类别--结合findAllParent()查找所有类别
    List<Category> findByParentId(Long parentId);

    //根据类别ID查询类别
    Category findById(Long categoryId);

    //根据类别名称查询类别
    List<Category> findByName(String categoryName);
    /**
     * 删除产品类别
     * @param categoryId 主键
     * @return 影响记录数
     */
    int deleteCateoryById(Long categoryId);
    /**
     * 批量删除产品
     * @param cateoryIds
     * @return
     */
    int deleteCateoryByIds(Long[] cateoryIds);


    /**
     * 前端分页查找类别
     * @param category
     * @return 类别列表
     */
    List<Category> selectCategoryList(Category category);

    /**
     * 新增产品类别
     * @param category
     * @return 影响记录数
     */
    int insertCategory(Category category);
    /**
     * 修改产品类别
     * @param category
     * @return 影响记录数
     */
    int updateCategory(Category category);


    /**
     * 查找类别父类的类别名称
     * @return 类别名称字符列表
     */
    Long selectParentId(String parentName);


}


//没有遵循上述"下划线-->驼峰"的规范，需要用@Results和@Result注解。
//        @Select("SELECT id, name FROM pos_category")
//        @Results({
//                @Result(column="id", property="categoryId", jdbcType=JdbcType.BIGINT, id=true),
//                @Result(column="name", property="categoryName", jdbcType=JdbcType.VARCHAR)
//        })
//        public List<Category> listAllCategory();